home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / nss / ecl-exp.h < prev    next >
C/C++ Source or Header  |  2006-04-20  |  7KB  |  197 lines

  1. /* 
  2.  * ***** BEGIN LICENSE BLOCK *****
  3.  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  4.  *
  5.  * The contents of this file are subject to the Mozilla Public License Version
  6.  * 1.1 (the "License"); you may not use this file except in compliance with
  7.  * the License. You may obtain a copy of the License at
  8.  * http://www.mozilla.org/MPL/
  9.  *
  10.  * Software distributed under the License is distributed on an "AS IS" basis,
  11.  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  12.  * for the specific language governing rights and limitations under the
  13.  * License.
  14.  *
  15.  * The Original Code is the elliptic curve math library.
  16.  *
  17.  * The Initial Developer of the Original Code is
  18.  * Sun Microsystems, Inc.
  19.  * Portions created by the Initial Developer are Copyright (C) 2003
  20.  * the Initial Developer. All Rights Reserved.
  21.  *
  22.  * Contributor(s):
  23.  *   Douglas Stebila <douglas@stebila.ca>, Sun Microsystems Laboratories
  24.  *
  25.  * Alternatively, the contents of this file may be used under the terms of
  26.  * either the GNU General Public License Version 2 or later (the "GPL"), or
  27.  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  28.  * in which case the provisions of the GPL or the LGPL are applicable instead
  29.  * of those above. If you wish to allow use of your version of this file only
  30.  * under the terms of either the GPL or the LGPL, and not to allow others to
  31.  * use your version of this file under the terms of the MPL, indicate your
  32.  * decision by deleting the provisions above and replace them with the notice
  33.  * and other provisions required by the GPL or the LGPL. If you do not delete
  34.  * the provisions above, a recipient may use your version of this file under
  35.  * the terms of any one of the MPL, the GPL or the LGPL.
  36.  *
  37.  * ***** END LICENSE BLOCK ***** */
  38.  
  39. #ifndef __ecl_exp_h_
  40. #define __ecl_exp_h_
  41.  
  42. /* Curve field type */
  43. typedef enum {
  44.     ECField_GFp,
  45.     ECField_GF2m
  46. } ECField;
  47.  
  48. /* Hexadecimal encoding of curve parameters */
  49. struct ECCurveParamsStr {
  50.     char *text;
  51.     ECField field;
  52.     unsigned int size;
  53.     char *irr;
  54.     char *curvea;
  55.     char *curveb;
  56.     char *genx;
  57.     char *geny;
  58.     char *order;
  59.     int cofactor;
  60. };
  61. typedef struct ECCurveParamsStr ECCurveParams;
  62.  
  63. /* Named curve parameters */
  64. typedef enum {
  65.  
  66.     ECCurve_noName = 0,
  67.  
  68.     /* NIST prime curves */
  69.     ECCurve_NIST_P192,
  70.     ECCurve_NIST_P224,
  71.     ECCurve_NIST_P256,
  72.     ECCurve_NIST_P384,
  73.     ECCurve_NIST_P521,
  74.  
  75.     /* NIST binary curves */
  76.     ECCurve_NIST_K163,
  77.     ECCurve_NIST_B163,
  78.     ECCurve_NIST_K233,
  79.     ECCurve_NIST_B233,
  80.     ECCurve_NIST_K283,
  81.     ECCurve_NIST_B283,
  82.     ECCurve_NIST_K409,
  83.     ECCurve_NIST_B409,
  84.     ECCurve_NIST_K571,
  85.     ECCurve_NIST_B571,
  86.  
  87.     /* ANSI X9.62 prime curves */
  88.     /* ECCurve_X9_62_PRIME_192V1 == ECCurve_NIST_P192 */
  89.     ECCurve_X9_62_PRIME_192V2,
  90.     ECCurve_X9_62_PRIME_192V3,
  91.     ECCurve_X9_62_PRIME_239V1,
  92.     ECCurve_X9_62_PRIME_239V2,
  93.     ECCurve_X9_62_PRIME_239V3,
  94.     /* ECCurve_X9_62_PRIME_256V1 == ECCurve_NIST_P256 */
  95.  
  96.     /* ANSI X9.62 binary curves */
  97.     ECCurve_X9_62_CHAR2_PNB163V1,
  98.     ECCurve_X9_62_CHAR2_PNB163V2,
  99.     ECCurve_X9_62_CHAR2_PNB163V3,
  100.     ECCurve_X9_62_CHAR2_PNB176V1,
  101.     ECCurve_X9_62_CHAR2_TNB191V1,
  102.     ECCurve_X9_62_CHAR2_TNB191V2,
  103.     ECCurve_X9_62_CHAR2_TNB191V3,
  104.     ECCurve_X9_62_CHAR2_PNB208W1,
  105.     ECCurve_X9_62_CHAR2_TNB239V1,
  106.     ECCurve_X9_62_CHAR2_TNB239V2,
  107.     ECCurve_X9_62_CHAR2_TNB239V3,
  108.     ECCurve_X9_62_CHAR2_PNB272W1,
  109.     ECCurve_X9_62_CHAR2_PNB304W1,
  110.     ECCurve_X9_62_CHAR2_TNB359V1,
  111.     ECCurve_X9_62_CHAR2_PNB368W1,
  112.     ECCurve_X9_62_CHAR2_TNB431R1,
  113.  
  114.     /* SEC2 prime curves */
  115.     ECCurve_SECG_PRIME_112R1,
  116.     ECCurve_SECG_PRIME_112R2,
  117.     ECCurve_SECG_PRIME_128R1,
  118.     ECCurve_SECG_PRIME_128R2,
  119.     ECCurve_SECG_PRIME_160K1,
  120.     ECCurve_SECG_PRIME_160R1,
  121.     ECCurve_SECG_PRIME_160R2,
  122.     ECCurve_SECG_PRIME_192K1,
  123.     /* ECCurve_SECG_PRIME_192R1 == ECCurve_NIST_P192 */
  124.     ECCurve_SECG_PRIME_224K1,
  125.     /* ECCurve_SECG_PRIME_224R1 == ECCurve_NIST_P224 */
  126.     ECCurve_SECG_PRIME_256K1,
  127.     /* ECCurve_SECG_PRIME_256R1 == ECCurve_NIST_P256 */
  128.     /* ECCurve_SECG_PRIME_384R1 == ECCurve_NIST_P384 */
  129.     /* ECCurve_SECG_PRIME_521R1 == ECCurve_NIST_P521 */
  130.  
  131.     /* SEC2 binary curves */
  132.     ECCurve_SECG_CHAR2_113R1,
  133.     ECCurve_SECG_CHAR2_113R2,
  134.     ECCurve_SECG_CHAR2_131R1,
  135.     ECCurve_SECG_CHAR2_131R2,
  136.     /* ECCurve_SECG_CHAR2_163K1 == ECCurve_NIST_K163 */
  137.     ECCurve_SECG_CHAR2_163R1,
  138.     /* ECCurve_SECG_CHAR2_163R2 == ECCurve_NIST_B163 */
  139.     ECCurve_SECG_CHAR2_193R1,
  140.     ECCurve_SECG_CHAR2_193R2,
  141.     /* ECCurve_SECG_CHAR2_233K1 == ECCurve_NIST_K233 */
  142.     /* ECCurve_SECG_CHAR2_233R1 == ECCurve_NIST_B233 */
  143.     ECCurve_SECG_CHAR2_239K1,
  144.     /* ECCurve_SECG_CHAR2_283K1 == ECCurve_NIST_K283 */
  145.     /* ECCurve_SECG_CHAR2_283R1 == ECCurve_NIST_B283 */
  146.     /* ECCurve_SECG_CHAR2_409K1 == ECCurve_NIST_K409 */
  147.     /* ECCurve_SECG_CHAR2_409R1 == ECCurve_NIST_B409 */
  148.     /* ECCurve_SECG_CHAR2_571K1 == ECCurve_NIST_K571 */
  149.     /* ECCurve_SECG_CHAR2_571R1 == ECCurve_NIST_B571 */
  150.  
  151.     /* WTLS curves */
  152.     ECCurve_WTLS_1,
  153.     /* there is no WTLS 2 curve */
  154.     /* ECCurve_WTLS_3 == ECCurve_NIST_K163 */
  155.     /* ECCurve_WTLS_4 == ECCurve_SECG_CHAR2_113R1 */
  156.     /* ECCurve_WTLS_5 == ECCurve_X9_62_CHAR2_PNB163V1 */
  157.     /* ECCurve_WTLS_6 == ECCurve_SECG_PRIME_112R1 */
  158.     /* ECCurve_WTLS_7 == ECCurve_SECG_PRIME_160R1 */
  159.     ECCurve_WTLS_8,
  160.     ECCurve_WTLS_9,
  161.     /* ECCurve_WTLS_10 == ECCurve_NIST_K233 */
  162.     /* ECCurve_WTLS_11 == ECCurve_NIST_B233 */
  163.     /* ECCurve_WTLS_12 == ECCurve_NIST_P224 */
  164.  
  165.     ECCurve_pastLastCurve
  166. } ECCurveName;
  167.  
  168. /* Aliased named curves */
  169.  
  170. #define ECCurve_X9_62_PRIME_192V1 ECCurve_NIST_P192
  171. #define ECCurve_X9_62_PRIME_256V1 ECCurve_NIST_P256
  172. #define ECCurve_SECG_PRIME_192R1 ECCurve_NIST_P192
  173. #define ECCurve_SECG_PRIME_224R1 ECCurve_NIST_P224
  174. #define ECCurve_SECG_PRIME_256R1 ECCurve_NIST_P256
  175. #define ECCurve_SECG_PRIME_384R1 ECCurve_NIST_P384
  176. #define ECCurve_SECG_PRIME_521R1 ECCurve_NIST_P521
  177. #define ECCurve_SECG_CHAR2_163K1 ECCurve_NIST_K163
  178. #define ECCurve_SECG_CHAR2_163R2 ECCurve_NIST_B163
  179. #define ECCurve_SECG_CHAR2_233K1 ECCurve_NIST_K233
  180. #define ECCurve_SECG_CHAR2_233R1 ECCurve_NIST_B233
  181. #define ECCurve_SECG_CHAR2_283K1 ECCurve_NIST_K283
  182. #define ECCurve_SECG_CHAR2_283R1 ECCurve_NIST_B283
  183. #define ECCurve_SECG_CHAR2_409K1 ECCurve_NIST_K409
  184. #define ECCurve_SECG_CHAR2_409R1 ECCurve_NIST_B409
  185. #define ECCurve_SECG_CHAR2_571K1 ECCurve_NIST_K571
  186. #define ECCurve_SECG_CHAR2_571R1 ECCurve_NIST_B571
  187. #define ECCurve_WTLS_3 ECCurve_NIST_K163
  188. #define ECCurve_WTLS_4 ECCurve_SECG_CHAR2_113R1
  189. #define ECCurve_WTLS_5 ECCurve_X9_62_CHAR2_PNB163V1
  190. #define ECCurve_WTLS_6 ECCurve_SECG_PRIME_112R1
  191. #define ECCurve_WTLS_7 ECCurve_SECG_PRIME_160R1
  192. #define ECCurve_WTLS_10 ECCurve_NIST_K233
  193. #define ECCurve_WTLS_11 ECCurve_NIST_B233
  194. #define ECCurve_WTLS_12 ECCurve_NIST_P224
  195.  
  196. #endif                            /* __ecl_exp_h_ */
  197.